home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung 2 / Power-Programmierung CD 2 (Tewi)(1994).iso / c / library / mslang / poetmf / src / progqry.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1993-11-23  |  4.6 KB  |  164 lines

  1. // ******************************************************************
  2. //
  3. //  progqry.cpp : implementation file
  4. // 
  5. //    Implemented classes:
  6. //        CProgQueryDlg
  7. // 
  8. //  Author: Nils Behncke
  9. //            POET Software, August 1993
  10. //
  11. // ******************************************************************
  12.  
  13. #include <stdafx.h>            //    header to MFC
  14. #include <helloapp.h>        //    header to application
  15. #include <progqry.h>        //    header to this file
  16. #include <queryres.h>        //    header to resultdialog
  17.  
  18. #ifdef _DEBUG                                     //    generated by ClassWizard
  19. #undef THIS_FILE                                
  20. static char BASED_CODE THIS_FILE[] = __FILE__;  
  21. #endif                                          
  22.  
  23. extern CHelloWinApp NEAR theApp;                //    declaration of application-instance
  24.                                                 
  25.                                                 
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CProgQueryDlg dialog
  28.  
  29. char    *programmermembers [] =                 //    additional members of Programmer
  30.         {
  31.             "Years of Exp.",
  32.             "Language",
  33.             ""
  34.         };
  35.  
  36.  
  37. CProgQueryDlg::CProgQueryDlg(CWnd* pParent, UINT nIDTemp)    //    modified constructor generated by ClassWizard 
  38.     : CPersQueryDlg(pParent, nIDTemp)                       //    call baseclass constructor
  39. {
  40.     //{{AFX_DATA_INIT(CProgQueryDlg)
  41.     m_strValue = "";                               //    clear Value 
  42.     m_nOpButtons = 1;                           //  set Radiobuttons default to Equal
  43.     //}}AFX_DATA_INIT
  44. }
  45.  
  46.  
  47.  
  48. void CProgQueryDlg::DoDataExchange(CDataExchange* pDX)
  49. {
  50.     CPersQueryDlg::DoDataExchange(pDX);            //    call baseclass dataexchange
  51.     //{{AFX_DATA_MAP(CProgQueryDlg)
  52.                                                 //    no additional controls to CPersQueryDlg
  53.     //}}AFX_DATA_MAP
  54. }
  55.  
  56. BEGIN_MESSAGE_MAP(CProgQueryDlg, CDialog)
  57.     //{{AFX_MSG_MAP(CProgQueryDlg)
  58.     ON_BN_CLICKED(IDC_QUERY_ENTER, OnClickedQueryEnter)
  59.     ON_BN_CLICKED(IDC_QUERY_START, OnClickedQueryStart)
  60.     //}}AFX_MSG_MAP
  61. END_MESSAGE_MAP()
  62.  
  63. void CProgQueryDlg::Init ()
  64. {
  65.     args = NULL;                                          //    initialize arguments
  66.     adrargs = NULL;
  67.     pall = new ProgrammerAllSet (theApp.GetOA ());        //    set pall polymorph to ProgrammerAllSet
  68.     if (args == NULL)
  69.         args = new ProgrammerQuery ();                  //    set agrs polymorph to ProgrammerQuery
  70. }
  71.  
  72. void CProgQueryDlg::SetMemberList ()
  73. {
  74.     SetMember (programmermembers);                        //    add additional membernames of Programmer into memberlist
  75.     CPersQueryDlg::SetMemberList ();                    //    add membernames    of Person into memberlist
  76. }
  77.  
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CProgQueryDlg message handlers
  80.  
  81. //    all handlerheaders generated by ClassWizard                                                                              
  82.  
  83. void CProgQueryDlg::OnClickedQueryEnter()
  84. {
  85.     int        item;
  86.  
  87.     UpdateData ();
  88.     if ( ( item = GetMember ( programmermembers )) >= 0 )    // returns indexnumber in programmermembers 
  89.                                                             // of current selection in memberlist
  90.     {
  91.         char    *buffer;
  92.         buffer = m_strValue.GetBuffer ( sizeof (buffer) );  // get value
  93.         m_strValue.ReleaseBuffer ();
  94.  
  95.         switch ( item )
  96.         {
  97.             case    0:    // Years of Experience
  98.                     {
  99.                         int        years;
  100.                         years = atoi (buffer);
  101.                         ((ProgrammerQuery *) args)->Setexp_years ( years, GetOp () );
  102.                         break;
  103.                     }
  104.             case    1:    // Languages
  105.                     {
  106.                         PtString    value ( buffer );
  107.                         ((ProgrammerQuery *) args)->Setlanguage ( value, GetOp () );
  108.                         break;
  109.                     }
  110.         }
  111.     }
  112.     else
  113.         CPersQueryDlg::OnClickedQueryEnter ();                //    search in personmembers
  114. }
  115.  
  116.  
  117. void CProgQueryDlg::OnClickedQueryStart()
  118. {
  119.     if (m_CQueryList.GetCount () > 0)
  120.     {
  121.  
  122.     ProgrammerOnDemandLSet    result;
  123.     int        erc;
  124.  
  125.     if ( adrargs )
  126.             args->Setadrs ( 1, PtGT | PtEQ, adrargs );                    // set addressarguments
  127.  
  128.     if ((erc=pall->Query ( (ProgrammerQuery *) args, &result )) == 0)   //    perform query
  129.     {
  130.         if ( result.GetNum () > 0 )                                     //    if matching
  131.         {
  132.             int    nResult;
  133.             CQueryResultDlg        queryresult (this);                     //    call resultdialog
  134.  
  135.             queryresult.SetResult ( & result );
  136.  
  137.             nResult = queryresult.DoModal ();                           //    execute dialog
  138.             queryresult.EndDialog (nResult);                            //    end dialog
  139.         }
  140.         else
  141.             MessageBox ("No Entries", "Query", MB_OK);                  //    no matching
  142.     }
  143.     else    //    query error
  144.     {
  145.         char    buffer[100];
  146.         sprintf ( buffer, "POET Query error: %d", erc );
  147.         MessageBox (buffer, "Query", MB_OK);
  148.     }
  149.  
  150. //    initialize for next query
  151.     delete args;
  152.     args = new ProgrammerQuery ();
  153.  
  154.     if ( adrargs )
  155.     {
  156.         delete adrargs;
  157.         adrargs = NULL;
  158.     }
  159.     m_CQueryList.ResetContent ();            //    reset argumentlistbox
  160.     }    
  161. }
  162.  
  163.  
  164.